Remote computing systems can enable users to remotely access hosted resources. Servers on the remote computing systems can execute programs and transmit signals indicative of a user interface to clients that can connect by sending signals over a network conforming to a communication protocol such as the TCP/IP protocol. Each connecting client may be provided a remote presentation session, i.e. an execution environment that includes a set of resources. The clients may use remote presentation protocols such as the Remote Desktop Protocol (RDP) to connect to a server resource.
In a remote presentation session, a client sends a server locally-received input, such as mouse cursor movements and keyboard presses. In turn, the server receives this input and performs processing associated with it, such as executing an application in a user session. When the server performs processing that results in an output, such as a graphical output, the server sends this output to the client for presentation. In this manner, applications appear to a user of the client to execute locally on the client when, they in fact, execute on the server.
Further, in the remote presentation session, data representing graphics to be transmitted to the client are typically compressed by the server, transmitted from the server to the client through a network, and decompressed by the client and displayed on the local user display. While there are known techniques for the server to compress and transmit the graphics data to the client through a network, there are also many unresolved problems. For example, problems arise when the network bandwidth constraints the size of the graphics data that can be transmitted to the client, resulting in network latencies and in a negative remote user experience.
Various schemes may be used to minimize the size of the graphics data in a remote presentation session that need to be encoded and transmitted to a remote computing device. Such schemes may include dividing the graphics data into portions, and encoding and transmitting only the portions that have changed since a previous transmission. However, such schemes do not account for and are applied independently of the available network bandwidth and the amount of data to be processed. Thus, such schemes do not optimally resolve the problems of network latencies and their negative impact to the remote user experience.